/**
 * @file RestrictionOperator.h
 * @brief The abstract class of restriction operator.
 * @author XDDDD
 * @version 
 * @date 2021-06-10
 */

#ifndef __PAISLEYPARK__RESTRICTIONOPERATOR_H__
#define __PAISLEYPARK__RESTRICTIONOPERATOR_H__

#include "MultigridVector.h"
#include <iostream>

template <size_t DIM>
class RestrictionOperator {
public:
	/**
	 * @brief Restrict the given vector into the coarser grid. The boundary knots won't be influnced.
	 *
	 * @param _v The given vector, is stored in Multigrid vector, which contains all the knots of each grids.
	 * @param _M The grid we want to restrict from.
	 */
	virtual void operator()(MultigridVector<DIM>& _v, const size_t _M) = 0;
};


#else
//Do nothing.
#endif
